/*@author cerimice*/
package Dialogos.Sica;

import Dialogos.Entidad.*;
import Dialogos.Modulo.Apartados.GenerarApartadoDlg;
import Dialogos.Modulo.Apartados.SeguimientoApartadoDlg;
import Dialogos.Modulo.OrdenServicio.GenerarOrdenServicioDlg;
import Dialogos.Modulo.OrdenServicio.SeguimientoOrdenServicioDlg;
import Dialogos.Modulo.RecargaCartucho.GenerarRecargaCartuchoDlg;
import Persistencia.Definicion.Usuario;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.MenuBar.MenuItem;
import com.vaadin.ui.*;
import com.vaadin.ui.themes.BaseTheme;

public class Principal extends Panel
    {
    private Usuario             usuario;
    private Window              mainWindow;
    private VerticalLayout      menu;
    private HorizontalLayout    marcoTrabajo;
    
    public VerticalLayout getMenu() {return menu;}
    
    public Principal(Window mainWindow, Usuario usuario)
        {
        this.mainWindow = mainWindow;
        this.usuario = usuario;
        agregarComponentes();
        }
    
    private void agregarComponentes()
        {
        /*Componentes*/
        Label etiqueta = new Label("<b>USUARIO: </b><i>"+usuario.getUsuario()+"</i> <b>RANGO: </b><i>"+usuario.getObjPermiso().getNombre()+"</i>");
            etiqueta.setContentMode(Label.CONTENT_XHTML);
        Button salir = new Button();
            salir.setIcon(new ThemeResource("icons/personal/salir.png"));
            salir.setStyleName(BaseTheme.BUTTON_LINK);
            salir.addListener(new Button.ClickListener() {@Override public void buttonClick(Button.ClickEvent event) {cerrarSesion();}});
        MenuBar menubar = new MenuBar();
            menubar.setIcon(new ThemeResource("images/logo.png"));
            menubar.setWidth(100,MenuBar.UNITS_PERCENTAGE);
        
        MenuBar.MenuItem catalogos  = menubar.addItem("Catalogos",new ThemeResource("icons/personal/catalogos.png"), null);
            if(usuario.getObjPermiso().getPermisoMarca())
                {
                MenuBar.MenuItem marcas = catalogos.addItem("Marcas",new ThemeResource("icons/personal/marca.png"), null);
                    marcas.setCommand(new MenuBar.Command()     {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new MarcaDlg());}});
                }
            if(usuario.getObjPermiso().getPermisoCliente())
                {
                MenuBar.MenuItem clientes   = catalogos.addItem("Clientes",new ThemeResource("icons/personal/cliente.png"), null);
                    clientes.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new ClienteDlg());}});
                }
            
            if(usuario.getObjPermiso().getPermisoUsuario())
                {
                MenuBar.MenuItem usuarios   = catalogos.addItem("Usuarios",new ThemeResource("icons/personal/usuario.png"), null);
                    usuarios.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new UsuarioDlg());}});
                }
            if(usuario.getObjPermiso().getPermisoTipoServicio())
                {
                MenuBar.MenuItem tipoServicio   = catalogos.addItem("Tipo de Servicio",new ThemeResource("icons/personal/tipoServicio.png"), null);
                    tipoServicio.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new TipoServicioDlg());}});
                }
            if(usuario.getObjPermiso().getPermisoCartucho())
                {
                MenuBar.MenuItem cartucho = catalogos.addItem("Cartuchos de tinta",new ThemeResource("icons/personal/cartuchoTinta.png"), null);
                    cartucho.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new CartuchoDlg());}});
                }
        
        MenuBar.MenuItem ordenes    = menubar.addItem("Ordenes de Servicio",new ThemeResource("icons/personal/ordenServicio.png"), null);
            if(usuario.getObjPermiso().getPermisoGenerarOrdenServicio())
                {
                MenuBar.MenuItem generarOrdenServicio = ordenes.addItem("Generar orden de servicio",new ThemeResource("icons/personal/generarOrdenServicio.png"), null);
                    generarOrdenServicio.setCommand(new MenuBar.Command()       {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new GenerarOrdenServicioDlg());}});
                }
            
            if(usuario.getObjPermiso().getPermisoSeguimientoOrdenServicio())
                {
                MenuBar.MenuItem seguimientoOrdenServicio = ordenes.addItem("Seguimiento orden de servicio",new ThemeResource("icons/personal/seguimientoOrdenServicio.png"), null);
                    seguimientoOrdenServicio.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new SeguimientoOrdenServicioDlg());}});
                }
        
        MenuBar.MenuItem recargasCartucho   = menubar.addItem("Recarga de cartuchos",new ThemeResource("icons/personal/recargaCartucho.png"), null);
            if(usuario.getObjPermiso().getPermisoRecargaCartucho())
                {
                MenuBar.MenuItem seguimientoRecarga = recargasCartucho.addItem("Seguimiento de Recargas",new ThemeResource("icons/personal/cartuchoTinta.png"), null);
                    seguimientoRecarga.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new GenerarRecargaCartuchoDlg());}});
                }

        MenuBar.MenuItem apartados  = menubar.addItem("Apartados",new ThemeResource("icons/personal/apartados.png"), null);
            MenuBar.MenuItem generarApartado = apartados.addItem("Generar Apartado",new ThemeResource("icons/personal/apartados.png"),null);
                generarApartado.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new GenerarApartadoDlg());}});
            MenuBar.MenuItem seguimientoApartado  = apartados.addItem("Seguimiento de Apartado",new ThemeResource("icons/personal/apartadosSeguimiento.png"), null);
                seguimientoApartado.setCommand(new MenuBar.Command()   {@Override public void menuSelected(MenuItem selectedItem){accionCambiarPanel(new SeguimientoApartadoDlg());}});
        
        /*Layouts*/
        HorizontalLayout usuarioLayout = new HorizontalLayout();
            usuarioLayout.addComponent(salir);
            usuarioLayout.addComponent(etiqueta);
        menu = new VerticalLayout();
            menu.setMargin(true,false,true,false);
        marcoTrabajo = new HorizontalLayout();
        mainWindow.setContent(menu);
        
        /*Agregar Componentes*/
        menu.addComponent(usuarioLayout);
            menu.setComponentAlignment(usuarioLayout,Alignment.TOP_LEFT);
        menu.addComponent(menubar);
            menu.setComponentAlignment(menubar,Alignment.TOP_CENTER);
        menu.addComponent(marcoTrabajo);
            menu.setComponentAlignment(marcoTrabajo,Alignment.TOP_CENTER);
        }
    
    private void accionCambiarPanel(Panel componente)
        {
        marcoTrabajo.removeAllComponents();
        marcoTrabajo.addComponent(componente);
        marcoTrabajo.setComponentAlignment(componente,Alignment.TOP_CENTER);
        }

    private void cerrarSesion()
        {mainWindow.getApplication().close();}
    }